package org.soderiakelvy.controller.producto;

import java.util.ArrayList;
import java.util.List;

import java.util.Map;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import org.soderiakelvy.controller.util.Constante;
import org.soderiakelvy.controller.util.SelectOneMany;
import org.soderiakelvy.model.domain.FrioCalorVO;
import org.soderiakelvy.model.service.ProductoServicio;
import org.soderiakelvy.model.service.imp.ProductoServicioImp;
import org.soderiakelvy.model.util.ConstantModel;

@ManagedBean
@ViewScoped
public class FrioCalorList {
	private List<FrioCalorVO> equiposDeFrioCalor;
	private ProductoServicio  service;
	private FrioCalorVO frioCalor ;
	private FrioCalorVO frioCalorSearch;
	
	//--- CONSTRUCTOR ---
	public FrioCalorList(){
		iniciarObject();
	}
	
	private void iniciarObject(){
		service = new ProductoServicioImp();
		frioCalor = new FrioCalorVO();
		frioCalorSearch = new FrioCalorVO();
		equiposDeFrioCalor = new ArrayList<FrioCalorVO>();
	}
	
	/**
	 * Buscar frio calor de acuerdo a los parametros
	 * @param fc
	 */
	public void buscarEquipos(FrioCalorVO fc){
		List<FrioCalorVO> result = service.buscarFrioCalorPorParametro(fc); 
		if(result != null){
			if(result.size()!=0){
				equiposDeFrioCalor = result;
			}else{
				FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Busqueda de Frio Calor", "No se encontro ningun equipo Frio Calor con los datos ingresados"));
			}
		}else{
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,"Error Interno", "Hubo un error mientras se realizaba la busqueda de los equipos Frio Calor"));
		}
	}
	
	public void nuevaBusqueda(){
		equiposDeFrioCalor = new ArrayList<FrioCalorVO>();
		frioCalorSearch = new FrioCalorVO();
	}
	public String nuevoFrioCalor(){
		return Constante.URL_FRIO_CALOR_NEW;
	}

	public void eliminarFrioCalor(){
		System.out.println("BAJA  DE "+this.frioCalor.getNumeroDeSerie());
		String result = service.deleteFrioCalorVO(frioCalor);
		if(result.equals(ConstantModel.SUCCESS)){
			equiposDeFrioCalor = new ArrayList<FrioCalorVO>();
		}else{
			if(result.equals(ConstantModel.DELETE_ASIGNADO)){
				FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,"No se puede eliminar el Equipo de Frio Calor porque esta asignado a otras Tablas", "sss"));
			}else {
				FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,"Error al Insertar un registro", "Surgio un error al eliminar un registro. Comuicarse con el responsable del Sistema"));
			}
		}
	}
	
	public void bajaListener(FrioCalorVO fc){
		System.out.println("LISTENER BAJA "+fc.getNumeroDeSerie());
		this.frioCalor = fc;
	}
	
	public String prepareEdit(FrioCalorVO frioCalor){
		FacesContext fc = FacesContext.getCurrentInstance();
		Map<String,Object> sessionParams = fc.getExternalContext().getSessionMap();
		sessionParams.put("frioCalorEdit", frioCalor);
		return Constante.URL_FRIO_CALOR_EDIT;
	}
	
	public List<FrioCalorVO> getEquiposDeFrioCalor() {
		return equiposDeFrioCalor;
	}

	public FrioCalorVO getFrioCalor() {
		return frioCalor;
	}

	public void setFrioCalor(FrioCalorVO frioCalor) {
		this.frioCalor = frioCalor;
	}

	public FrioCalorVO getFrioCalorSearch() {
		return frioCalorSearch;
	}

	public void setFrioCalorSearch(FrioCalorVO frioCalorSearch) {
		this.frioCalorSearch = frioCalorSearch;
	}
	
	
}

